package com.yunnuo.system.menu.service;

import com.yunnuo.system.comm.service.IBaseService;
import com.yunnuo.system.comm.util.Tree;
import com.yunnuo.system.menu.entity.Menu;
import com.yunnuo.system.role.entity.Role;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by w_weihf on 2018/8/3.
 */
public interface IMenuService extends IBaseService<Menu> {

    /**
     * 根据用户ID查询权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    Set<String> selectPermsByUserId(String userId);

    /**
     * 查询系统所有权限
     *
     * @return 权限列表
     */
    public Map<String, String> selectPermsAll();

    /**
     * 根据用户ID查询菜单
     *
     * @param id 用户ID
     * @return 菜单列表
     */
    List<Tree<Menu>> listMenuTree(String id);

    /**
     * 根据夫级别菜单查询子菜单
     * @param menuId
     * @return
     */
    int selectCountMenuByParentId(String menuId);


    /**
     * 根据角色生成菜单树
     * @param role
     * @return
     */
    List<Map<String,Object>> roleMenuTreeData(Role role);

    /**
     * 加载所有菜单树
     * @return
     */
    List<Map<String,Object>> menuTreeData();

    /**
     * 根据菜单ID查询菜单信息
     * @param id
     * @return
     */
    Menu selectMenuById(String id);
}
